class Person():
    # 类属性
    country="中国"
    def __init__(self):
        self.name="小明"
    pass
    # 类方法
    @classmethod
    def getCountry(cls):
        return cls.country
#     静态方法
    @staticmethod
    def sayHi():
        print("我是静态方法")

xm=Person()
# 类属性实例对象和类对象都可以正常访问
print(xm.country)
print(Person.country)
# 实例属性只能够通过实例对象所访问
print(xm.name)
# print(Person.name)  会报错
# 这里修改的不是类属性，而是会生成一个实例属性，一旦生成一个实例属性与类属性同名
# 实例对象会屏蔽掉类属性
xm.country="CHINA"
xh=Person()
print(xh.country)

print("通过类对象修改类属性")
Person.country="China"
print(xh.country)  #这里输出的为China
print(xm.country)  #这里输出的为CHINA

# 类方法可以通过实例对象和类对象进行调用
print(xm.getCountry())
print(Person.getCountry())
# 静态方法可以通过实例对象和类对象进行调用
xm.sayHi()
Person.sayHi()